package 面向对象;

public class 继承1
{
	public static void main(String[] args){
		new Wolf();
		/*
		 输出：
		 *Creature无参数构造器
		 *Animal一参数构造器,该动物的名字是灰太狼
		 *Animal二参数构造器,其年龄是3
		 *Wolf无参数构造器

		 创建任何对象总是从该类所在继承树最顶层类的构造器开始执行，
		 然后依次向下执行，
		 最后才执行本类的构造器。
		 如果某个父类通过this调用了同类中重载的构造器，
		 就会依次执行此父类的多个构造器
		 */
	}
}
//继承树构造器执行顺序
class Creature{
	public Creature(){
		System.out.println("Creature无参数构造器");
	}
}
class Animal extends Creature{
	public Animal(String name){
		System.out.println("Animal一参数构造器,"+"该动物的名字是"+name);
	}
	public Animal(String name,int age){
		this(name);
		System.out.println("Animal二参数构造器,"+"其年龄是"+age);
	}
}
class Wolf extends Animal
{
	public Wolf(){
		super("灰太狼",3);
		System.out.println("Wolf无参数构造器");
	}
	
}

